package com.tmt.spring.validation;

import java.lang.annotation.*;

/**
 * 本注解用于标注TmtUser对象注册时的必填字段，以及定义这些字段在界面上的显示顺序
 */
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequiredField {

    String label();

    int order() default 0;

    /**
     * 是否在前端页面显示标注的字段
     * @return
     */
    boolean display() default true;

    /**
     * 是否在前端页面上显示Label信息
     * @return
     */
    boolean displayLabel() default true;

    /**
     * 是否在数据表中可重复
     * @return
     */
    boolean repeatable() default true;

    /**
     * 校验器类
     * @return
     */
    String validatorClass() default "com.tmt.spring.validation.RegisterValidateHelper";

    /**
     * 校验器方法, 默认方法名称为"validate"+字段名称（首字母大写）
     * 如果设置为"*"，则需要Validator实现类进行动态设置
     * @return
     */
    String methodName() default "";

    /**
     * 字段值需要作为参数传入的其他字段名称。
     * （方法的第一个传入参数默认为当前被标注的字段的值）
     * @return
     */
    String[] methodParam() default {};

    /**
     * 字段输入提示
     * @return
     */
    String fieldHint() default "";

    /**
     * 对应validation.properties文件中定义的Key
     * @return
     */
    String errorCode() default "";
}


